﻿using System.Diagnostics.Contracts;

namespace System.Reactive.Joins
{
	public class Pattern<T1, T2, T3> : Pattern
	{
		public Pattern<T1, T2, T3, T4> And<T4>(IObservable<T4> other)
		{
			Contract.Requires(other != null, null, "other != null");
			Contract.Ensures(Contract.Result<Pattern<T1, T2, T3, T4>>() != null, null, "Contract.Result<Pattern<T1, T2, T3, T4>>() != null");
			return null;
		}

		public Plan<TResult> Then<TResult>(Func<T1, T2, T3, TResult> selector)
		{
			Contract.Requires(selector != null, null, "selector != null");
			Contract.Ensures(Contract.Result<Plan<TResult>>() != null, null, "Contract.Result<Plan<TResult>>() != null");
			return null;
		}
	}
}